﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LunarSF.SHomeWorkshop.LunarMarkdownEditor
{
    ///<summary>
    /// 此类用于表示一道试题某个答案或用作混淆的选项。
    ///</summary>
    public class ChoiceItem
    {
        private bool isAnswer = false;
        /// <summary>
        /// 表示此项是答案。
        /// </summary>
        public bool IsAnswer
        {
            get { return isAnswer; }
            set { this.isAnswer = value; }
        }

        /// <summary>
        /// 为便于脚本调用，提供一个别名。
        /// </summary>
        public bool 是否答案
        {
            get { return isAnswer; }
            set { this.isAnswer = value; }
        }

        private static char[] trimChars = new char[] { ' ', '　', '\t', '\r', '\n', };

        private string text;
        /// <summary>
        /// 选择项的文本。
        /// </summary>
        public string Text
        {
            get { return (text ?? "").Trim(trimChars); }
            set { this.text = value; }
        }

        /// <summary>
        /// 为便于脚本调用，提供一个别名。
        /// </summary>
        public string 选择项文本
        {
            get { return (text ?? "").Trim(trimChars); }
            set { this.text = value; }
        }

        public string 题支文本
        {
            get { return (text ?? "").Trim(trimChars); }
            set { this.text = value; }
        }

        private string analysisText;
        /// <summary>
        /// 选择项解析文本。
        /// </summary>
        public string AnalysisText
        {
            get { return (analysisText ?? "").Trim(trimChars); }
            set { this.analysisText = value; }
        }

        /// <summary>
        /// 为便于脚本调用，提供一个别名。
        /// </summary>
        public string 解析文本
        {
            get { return (analysisText ?? "").Trim(trimChars); }
            set { this.analysisText = value; }
        }

        private string checkPoints;
        /// <summary>
        /// 选择项考查点文本。
        /// </summary>
        public string CheckPoints
        {
            get { return (checkPoints ?? "").Trim(trimChars); }
            set { this.checkPoints = value; }
        }

        /// <summary>
        /// 为便于脚本调用，提供一个别名。
        /// </summary>
        public string 考点文本
        {
            get { return (checkPoints ?? "").Trim(trimChars); }
            set { this.checkPoints = value; }
        }

        private int orderNumber = 0;
        /// <summary>
        /// 选择项用于排序的序号。
        /// </summary>
        public int OrderNumber
        {
            get { return orderNumber; }
            set { this.orderNumber = value; }
        }

        /// <summary>
        /// 为便于脚本调用，提供一个别名。
        /// </summary>
        public int 选项编号
        {
            get { return orderNumber; }
            set { this.orderNumber = value; }
        }

        public string 选项字母编号
        {
            get
            {
                return L.ConvertToAlpha(OrderNumber);
            }
        }

        public string 编号选择项文本
        {
            get
            {
                var letter = 选项字母编号;
                if (string.IsNullOrWhiteSpace(letter))
                {
                    return 选择项文本;
                }

                return letter + "．" + 选择项文本;
            }
        }

        public string 编号题支文本
        {
            get
            {
                var mark = 选项字母编号;
                if (string.IsNullOrWhiteSpace(mark))
                {
                    return 选择项文本;
                }

                return mark + 选择项文本;
            }
        }
    }
}
